/**
 * 409.最长回文串
 */
public class Exerciser3 {
    public int longestPalindrome(String s) {
        // 记录每个字符出现的次数，如果为偶数，就是进行 / 2 * 2 操作，因为只关心长度，不关心回文串的形式
        // 因为 /2 如果不为零的话，那么就为偶数，给其变回原长度需要 *2
        // 如果最后的的长度不等于 s的长度的话，那么说明有 奇数 的字符个数，那么只需要选择一个奇数字符进行头的话，也是字符串，也就是 +1 操作

        // 使用 数组 模拟哈希表
        int[] hash = new int[127];
        // 把s中的字符进行计数
        for(int i = 0;i < s.length();i++) {
            hash[s.charAt(i)]++;
        }

        //进行统计长度
        int ret = 0;
        for(int x : hash) {
            ret += x / 2 * 2;
        }
        return ret < s.length() ? ret + 1 : ret;
    }
}
